<?php
/**
 * 定义MilkPHP核心函数，并初始化milkphp
 *
 * @link http://www.milkphp.com/
 * @author donwa <donwa@milkphp.com>
 * @license New BSD License {@link http://www.milkhphp.com/license/}
 * 
 */ 

/**
 * 判断PHP版本
 */
if(version_compare(PHP_VERSION,'5.0.0','<') ) die('MilkPHP require PHP > 5.0 !');
error_reporting(E_ALL & ~ E_NOTICE );
/*
 * MilkPHP版本号
 */
define('M_VERSION','1.0.0');

define('M_TIME',time());

/**
 * MilkPHP 框架所在路径
 */
define('M_DIR', str_replace("\\", "/", dirname(__FILE__)).'/');

/**
 * 类milkphpAutoload 完成MilkPHP的自动类加载
 * -定义注册自动类载入方法
 * -实现runtimeCache
 */
class milkphpAutoload{
	
	/**
	 * 函数autoload，自动加载文件 
	 * 
	 */
	static function autoload($class){
//		echo $class.'<br/>';
		$arr = explode('_',$class,2);
		if(!in_array($arr[0],array('lib','model'))||!preg_match("/^[a-z|0-9|A-Z|_]+$/",$class)){
			milkphp()->debug('e',"class name:$class 不合法");
			return;
		}
		$file=M_DIR . str_replace('_','/',$class).'.php';
//		echo $file;
		if(@include($file)){
			milkphp()->debug('i',"include 文件 $file");
		}else{
			milkphp()->debug('e',"文件 $file 不存在");
		}
	}
	
	/**
	 * 注册自动类载入方法
	 */
	static function registerAutoload(){
		//如果之前有__autoload函数，加入序列
		if(function_exists('__autoload')){
			spl_autoload_register('__autoload');
		}
		//注册milkphp的__autoload函数
		spl_autoload_register(array('milkphpAutoload','autoload'));
	}
}
//__autoload
milkphpAutoload::registerAutoload();


/**
 * 函数 milkphp 是MilkPHP的核心函数，是框架的入口。
 */
function milkphp(){
	$args = func_get_args();
 	switch (@$args[0]{0}){
 		case NULL:
 			return lib_milkphp::_do();
 		case '#':
 			return milkphp()->data(ltrim($args[0],'#'));
 		case '+':
 			return milkphp()->helper(ltrim($args[0],'+'));
 		case '.':
 			return milkphp()->db(ltrim($args[0],'.'));
 			/*foreach($args as &$value)$value = ltrim($value,'.');
 			return call_user_func_array(array(milkphp()->db(),'_do'), $args);*/
 		default:
 			#call_user_func_array(array($foo, "bar"), array("three", "four"));
 			return milkphp()->db($args[0]);
 	}
}

/**
 * 简写milkphp函数,避免与其他框架冲突，可以改名
 */
function m(){
	$args = func_get_args();
	return call_user_func_array("milkphp",$args);
}

require(M_DIR.'functions.php');